<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>11.正则中的匹配子项()</title>
        <script>
            /**
             * replace：正则去匹配字符串，匹配成功的字符去替换成新的字符串
             * replace的写法：旧的字符串.replace(正则, 新的字符串)
             * 正则默认是匹配成功就会结束，不会继续匹配
             * 如果想要查找全部，就要加标识g(global ---> 全局匹配)
             * 量词：匹配不确定的位置
             * +：至少出现一次(大于等于1)
             */
            /**
             * 匹配子项：小括号()，(还有另外一个意思，分组操作)
             * 1 + 1 * 2 = 3;
             * (1 + 1) * 2 = 4;
             * *****************---------------*******************
             * 把正则的整体叫做(母亲)，然后把左边第一个小括号里面的正则，叫做
             * 这个第一个子项(母亲的第一个孩子)，第二个小括号就是第二个孩子
             */
            var str = '2018-2-25';
            // 我想匹配8-、2-，这个正则该如何写
            // var re = /\d-+/g;
            // 我想匹配8-、2-，这个正则该如何写
            // var re = /(\d-)+/g;
            // 我想匹配2018-、02-，这个正则该如何写
            // var re = /\d+-/g;
            var re = /(\d+)(-)/g;
            str = str.replace(re, function ($0, $1, $2) {
                /**
                 * 第一个参数：$0(母亲)
                 * 第二个参数：$1(母亲的第一个孩子)
                 * 第三个参数：$2(母亲的第二个孩子)
                 */
                // alert($1);
                // $0也同样可以做，只是稍微麻烦复杂些
                // return $0.substring(0, $0.length - 1) + '.';
                // $1 ---> 2013- ---> 2013.
                return $1 + '.';
            });

            // 想实现的需求，正则不变，日期格式变为：2018.2.25，那么这时候就可以利用匹配子项来做
            alert( str );
        </script>
    </head>
    <body>

    </body>
</html>
